In computer networking, segment routing is source based routing where the source chooses a path and encodes it in a packet header as an ordered list of segments. Segment routing is applicable in at least multiprotocol label switching (MPLS) and Internet Protocol version 6 (IPv6) dataplane. In IPv6, a new extension header, referred to as a ‘segment routing header’ or ‘SRH’, is used by a packet to carry an ordered list of segments to help make routing decisions for the packet. A segment can be an encoded IPv6 address. Thus, an ordered list of segments can be encoded as an ordered list of IPv6 addresses. A pointer can be used to indicate which segment to process at a given node. Upon a segment being processed by a node, the pointer can be modified to point to the next segment in the ordered list. In MPLS, a segment can be encoded as an MPLS label. An ordered list of segments can be encoded as a stack of labels. Upon a segment being processed by a node, the associated label is popped from the stack.
In a segment routing architecture, per-flow routing states are not maintained in nodes other than the ingress node to a segment routing domain, which can be a source node in some implementations. Thus, managing packet transmission errors in a segment routing domain presents a significant challenge to traffic engineers and administrators.